Python3.x,celery4.x...我有一个基于类的任务。myproj/celery.pyfromceleryimportCelery#djangosettingsstuff...app=Celery('myproj')app.autodiscover_tasks()app1/tasks.pyimportceleryclassEmailTask(celery.Task):defrun(self,*args,**kwargs):self.do_something()如果我这样做:$celeryworker-Amyproj-linfo[tasks].app2.tasks.debug
我想每2小时执行一次任务。Python在Threading模块中有一个Timer,但是它满足我的需求吗?我如何自己生成合适的计时器? 最佳答案 如果您希望您的代码每2小时运行一次,最简单的方法是使用cron或一个类似的调度程序,具体取决于您的操作系统如果您希望您的程序每n秒调用一个函数(在您的情况下为7200)你可以使用一个线程和event.wait。以下示例启动一个计时器每秒触发一次并打印一个字符串到标准输出importthreadingimporttimeclassTimerClass(threading.Thread):def
我在我正在处理的Django项目中设置了Celery。我想将celery任务的日志记录与其余的celery日志(celerycam、celerybeat等)分开。根据Celery文档(http://docs.celeryproject.org/en/latest/userguide/tasks.html#logging),我似乎应该能够为“celery.task”定义一个Django记录器,它应该执行此操作。但是,当我这样做时,日志中没有显示任何内容。如果我创建一个通用的“celery”记录器,一切都会显示出来,这意味着这可能与记录器的名称有关。我在这里错过了什么?有什么办法可以做到这
我用redisbroker添加了一些错误的task到celery但现在我想删除不正确的任务,但我找不到任何方法来做到这一点是否有一些命令或一些api可以执行此操作? 最佳答案 我知道有两种方法:1)直接从代理删除队列。在您的情况下,它是Redis。有两个命令可以帮助您:llen(找到正确的队列)和del(删除它)。2)使用--purge或--discard选项启动celeryworker。这是帮助:--purge,--discardPurgesallwaitingtasksbeforethedaemonisstarted.**WAR
我需要通过ftp下载一个文件,修改它然后上传回来。我正在使用celery来执行此操作,但是在尝试使用链接时遇到了问题,我得到了:TypeError:upload_ftp_image()takesexactly5arguments(6given)此外,我可以使用链并确保步骤是连续的吗?如果不是,还有什么选择?res=chain(download_ftp_image.s(server,username,password,"/test_app_2/model.dae","tmp/test_app_2/"),upload_ftp_image.s(server,username,password
我正在使用Django1.6、RabbitMQ3.5.6、celery3.1.19。有一个周期性任务每30秒运行一次,并使用给定的eta参数创建200个任务。在我运行celeryworker之后,队列在RabbitMQ中慢慢创建,我看到大约1200个计划任务等待被触发。然后,我重新启动celeryworker,所有等待的1200个计划任务都从RabbitMQ中删除。我如何创建任务:my_task.apply_async((arg1,arg2),eta=my_object.time_in_future)我这样运行worker:pythonmanage.pyceleryworker-Qmy
我想要一个可以查看所有未决任务的地方。我不是在谈论注册的函数/类作为任务,而是我可以显示的实际计划作业:名称、task_id、eta、worker等。使用Celery2.0.2和djcelery,我在文档中找到了“inspect”。我试过:fromcelery.task.controlimportinspectdefget_scheduled_tasks(nodes=None):ifnodes:i=inspect(nodes)else:i=inspect()scheduled_tasks=[]dump=i.scheduled()ifdump:forworker,tasksindump:
我发现celery支持任务链:http://celery.readthedocs.org/en/latest/userguide/canvas.html#chains.问题是:如何停止链在任务中的执行?例如,我们得到了一个包含N个项目的链(N>2)。在第二个任务中,我们意识到我们不需要执行所有其余任务。怎么办? 最佳答案 在较新版本的celery(3.1.6)中,您可以通过简单地遍历链并依次撤销每个项目来撤销整个链。#Buildachainforresultsfromtasksimportadddfromceleryimportch
我在googleappengine上使用NickJohnson的批量更新库(http://blog.notdot.net/2010/03/Announcing-a-robust-datastore-bulk-update-utility-for-App-Engine).它对其他任务非常有效,但出于某种原因,使用以下代码:fromgoogle.appengine.extimportdbfrommyapp.main.modelsimportStory,CommentimportbulkupdateclassMigrate(bulkupdate.BulkUpdater):DELETE_COM
我正在将几个任务放入任务队列中,想知道特定任务何时完成。我没有在API中找到任何关于回调或检查任务状态的内容,所以我想我会看看其他人做了什么,或者是否有变通(或官方)方法来检查。我不关心单个任务,如果有帮助,我会放入6个不同的任务,并想知道这6个任务何时完成。谢谢! 最佳答案 新的REST/JSON任务队列API可以让您做到这一点。http://code.google.com/appengine/docs/python/taskqueue/rest.html这不能很好地扩展到数千个任务...不过,我确实喜欢管道API建议!